Je souhaite supprimer une branche à la fois localement et à distance. Échec des tentatives de suppression d'une branche distante $ git branch -d télécommandes / origine / correction de bogue erreur: branche 'télécommandes / origine / correction de bogue' introuvable. $ git branch -d origine / correction de bogue erreur: branche 'origine / correctif' introuvable. $ git branch -rd origine / correction de bogue Suppression de l'origine / correction de bogue de la branche distante (était 2a14ef7). $ git push tout est à jour $ git pull Depuis github.com:gituser/gitproject * [nouvelle branche] bugfix -> origine / bugfix Déjà à jour. Que dois-je faire différemment pour supprimer avec succès la branche télécommandes / origine / correction de bogue à la fois localement et à distance?
2020-12-07 13:12:09
1 2 Prochain Résumé $ git push -d$ git branch -d Notez que dans la plupart des cas, le nom distant est origin. Dans un tel cas, vous devrez utiliser la commande comme ceci. $ git push -d origine Supprimer la branche locale Pour supprimer la branche locale, utilisez l'une des méthodes suivantes: $ git branch -d nom_branche $ git branch -D nom_branche Remarque: l'option -d est un alias pour --delete, qui ne supprime la branche que si elle a déjà été entièrement fusionnée dans sa branche amont. Vous pouvez également utiliser -D, qui est un alias pour --delete --force, qui supprime la branche «quel que soit son état fusionné». [Source: man git-branch] Notez également que git branch -d nom_branche échouera si vous êtes actuellement dans la branche que vous souhaitez supprimer. Le message commence par erreur: impossible de supprimer la branche «nom_branche». Si tel est le cas, commencez par changer à une autre branche, par exemple: git checkout master. Supprimer la succursale distante [Mise à jour le 8 septembre 2017] Depuis Git v1.7.0, vous pouvez supprimer une branche distante en utilisant $ git push --delete ce qui pourrait être plus facile à retenir que $ git push : qui a été ajouté dans Git v1.5.0 "pour supprimer une branche distante ou une balise." À partir de Git v2.8.0, vous pouvez également utiliser git push avec l'option -d comme alias pour --delete. Par conséquent, la version de Git que vous avez installée déterminera si vous devez utiliser la syntaxe la plus simple ou la plus difficile. Supprimer la succursale distante [Réponse originale du 5 janvier 2010] Extrait du chapitre 3 de Pro Git par Scott Chacon: Suppression de succursales distantes Supposons que vous en ayez terminé avec une branche distante - par exemple, vous et vos collaborateurs avez terminé avec une fonctionnalité et l'avez fusionnée dans la branche principale de votre télécommande (ou quelle que soit la branche dans laquelle se trouve votre ligne de code stable). Vous pouvez supprimer une branche distante en utilisant la syntaxe plutôt obtuse git push [remotename]: [branch]. Si vous souhaitez supprimer votre branche de correctif de serveur du serveur, exécutez ce qui suit: $ git push origine: serverfix À git@github.com: schacon / simplegit.git - [supprimé] serverfix Boom. Plus de succursales sur votre serveur. Vous voudrez peut-être écouter cette page, car vous aurez besoin de cette commande et vous oublierez probablement la syntaxe. Une façon de se souvenir de cette commande est de rappeler la syntaxe git push [remotename] [localbranch]: [remotebranch] que nous avons abordée un peu plus tôt. Si vous supprimez la partie [localbranch], vous dites en gros: "Ne prenez rien de mon côté et faites-en [remotebranch]." J'ai publié git push origin: bugfix et cela a fonctionné à merveille. Scott Chacon avait raison - je voudrais faire une oreille de chien à cette page (ou pratiquement une oreille de chien en répondant à cela sur Stack Overflow). Ensuite, vous devez l'exécuter sur d'autres machines # Récupérer les modifications de toutes les télécommandes et les supprimer localement # branches / balises supprimées à distance, etc. # --prune fera le travail: -; git fetch --all --prune pour propager les changements. | La réponse de Matthew est idéale pour supprimer les branches distantes et j'apprécie également l'explication, mais pour faire une distinction simple entre les deux commandes: Pour supprimer une branche locale de votre machine: git branch -d {the_local_branch} (utilisez -D à la place pour forcer la suppression de la branche sans vérifier l'état de la fusion) Pour supprimer une branche distante du serveur: git push origin --delete {the_remote_branch} Référence: Git: Supprimer une branche (locale ou distante) | Les réponses courtes Si vous souhaitez des explications plus détaillées sur les commandes suivantes, consultez les longues réponses dans la section suivante. Supprimer une branche distante git push origin --delete # Git version 1.7.0 ou plus récente git push origin -d # Version plus courte (Git 1.7.0 ou plus récent) git push origin: # versions de Git antérieures à 1.7.0 Supprimer une succursale locale branche git --delete git branch -d # Version plus courte git branch -D # Forcer la suppression des branches non fusionnées Suppression d'une branche locale de suivi à distance git branch --delete --remotes / git branch -dr / # Plus court git fetch --prune # Supprimer plusieurs branches obsolètes de suivi à distance git fetch -p # Plus court La réponse longue: il y a trois branches différentes à supprimer! Lorsque vous supprimez des branches à la fois localement et à distance, gardez à l'esprit que trois branches différentes sont impliquées: La succursale locale X. La branche d'origine distante X. Origine / X de la branche distante locale qui suit la branche distante X. L'affiche originale utilisée: git branche -rd origine / correction de bogue Ce qui a seulement supprimé son origine / correction de bogue de la branche distante locale, et non la correction de bogue de la branche distante réelle sur l'origine. Pour supprimer cette branche distante réelle, vous devez git push origin --delete bugfix Détails supplémentaires Les sections suivantes décrivent des détails supplémentaires à prendre en compte lors de la suppression de vos branches distantes et de suivi à distance. Pousser pour supprimer les branches distantes supprime également les branches de suivi à distance Notez que la suppression de la branche distante X de la ligne de commandel'utilisation d'un push git supprimera également l'origine / X de la branche de suivi à distance locale, il n'est donc pas nécessaire d'élaguer la branche de suivi à distance obsolète avec git fetch --prune ou git fetch -p. Cependant, cela ne ferait pas de mal si vous le faisiez de toute façon. Vous pouvez vérifier que l'origine / X de la branche de suivi à distance a également été supprimée en exécutant ce qui suit: # Afficher uniquement les branches de suivi à distance git branch --remotes git branche -r # Afficher à la fois les branches strictement locales et distantes git branch --all git branche -a Élagage de l'origine / X de la branche de suivi à distance locale obsolète Si vous n'avez pas supprimé votre branche distante X de la ligne de commande (comme ci-dessus), alors votre référentiel local contiendra toujours (désormais obsolète) l'origine / X de la branche distante de suivi. Cela peut se produire si vous supprimez une branche distante directement via l'interface Web de GitHub, par exemple. Un moyen typique de supprimer ces branches obsolètes de suivi à distance (depuis la version 1.6.6 de Git) consiste simplement à exécuter git fetch avec --prune ou plus court -p. Notez que cela supprime toutes les branches de suivi à distance locales obsolètes pour toutes les branches distantes qui n'existent plus sur la télécommande: git fetch origin --prune git fetch origin -p # Plus court Voici la citation pertinente des notes de version 1.6.6 (c'est moi qui souligne): "git fetch" a appris --all et --multipleoptions, pour exécuter fetch depuis de nombreux référentiels et l'option --prune pour supprimer le suivi à distance branches qui sont devenues périmées. Ceux-ci font "git remote update" et "git élagage à distance "moins nécessaire (il n'y a pas de plan de suppression" à distance update "ni" remote prune ", cependant). Alternative à l'élagage automatique ci-dessus pour les branches obsolètes de suivi à distance Alternativement, au lieu d'élaguer vos branches de suivi à distance locales obsolètes via git fetch -p, vous pouvez éviter d'effectuer l'opération réseau supplémentaire en supprimant simplement manuellement la ou les branches avec les indicateurs --remote ou -r: git branch --delete --remotes origin / X git branch -dr origin / X # Shorter Voir également Page de manuel de git-branch (1). Page de manuel git-fetch (1). Pro Git § 3.5 Git Branching - Branches distantes. | Procédure de suppression d'une branche: Pour supprimer la branche distante: git push origin --delete Pour supprimer la branche locale, vous disposez de trois méthodes: 1: branche git -D 2: git branch --delete --force # Identique à -D 3: git branch --delete # Erreur lors de l'annulation de la fusion Expliquez: OK, expliquez simplement ce qui se passe ici! Faites simplement git push origin --delete pour supprimer uniquement votre branche distante, ajoutez le nom de la branche à la fin et cela supprimera et la poussera vers remote en même temps ... De plus, git branch -D, qui supprime simplement la branche locale uniquement! ... -D signifie --delete --force qui supprimera la branche même si elle n'est pas fusionnée (forcer la suppression), mais vous pouvez également utiliser -d qui signifie --delete qui génère une erreur respective de l'état de fusion de branche ... Je crée également l'image ci-dessous pour montrer les étapes: | Vous pouvez également utiliser ce qui suit pour supprimer la branche distante git push --delete origin serverfix Ce qui fait la même chose que git push origine: serverfix mais cela peut être plus facile à retenir. | Conseil: lorsque vous supprimez des branches à l'aide de git branch -d # Supprime la branche locale ou git push origin: # Supprime la branche distante seules les références sont supprimées. Même si la branche est effectivement supprimée sur la télécommande, les références à celle-ci existent toujours dans les référentiels locaux des membres de votre équipe. Cela signifie que pour les autres membres de l'équipe, les branches supprimées sont toujours visibles lorsqu'ils font une branche git -a. Pour résoudre ce problème, les membres de votre équipe peuvent élaguer les branches supprimées avec git remote prune Il s'agit généralement de git remote prune origin. | Si vous souhaitez supprimer une branche, commencez par effectuer le retrait dans la branche autre que la branche à supprimer. git checkout other_than_branch_to_be_deleted Suppression de la branche locale: git branch -D branch_to_be_deleted Suppression de la branche distante: git push origin --delete branch_to_be_deleted | git branch -D git branch -D -r origine / git push origin: | C'est simple: exécutez simplement la commande suivante: Pour supprimer une branche Git à la fois localement et à distance, supprimez d'abord la branche locale à l'aide de cette commande: exemple de git branch -d (Voici l'exemple du nom de la branche.) Et après cela, supprimez la branche distante à l'aide de cette commande: git push origin: exemple | C'est très simple: Pour supprimer la branche distante git push -d origine Ou git push origine: Pour supprimer de force la branche locale git branch -D | Une autre approche est: git push --prune origin AVERTISSEMENT: cela supprimera toutes les branches distantes qui n'existent pas localement. Ou plus globalement, git push --mirror fera effectivement ressembler le référentiel distant à la copie locale du référentiel (les têtes locales, les télécommandes et les balises sont mises en miroir sur la télécommande). | J'utilise ce qui suit dans mes paramètres Bash: alias git-shoot = "git pushorigine - supprimer " Ensuite, vous pouvez appeler: nom de la branche git-shoot | Supprimer localement: Pour supprimer une branche locale, vous pouvez utiliser: git branch -d Pour supprimer une branche de force, utilisez -D au lieu de -d. git branch -D Supprimer à distance: Il existe deux options: git push origin: nom de branche git push origin --delete branchname Je vous suggère d'utiliser la deuxième méthode car elle est plus intuitive. | Depuis janvier 2013, GitHub a inclus un bouton Supprimer la branche à côté de chaque branche dans votre page "Branches". Article de blog pertinent: créer et supprimer des branches | Si vous souhaitez effectuer ces deux étapes avec une seule commande, vous pouvez lui créer un alias en ajoutant ce qui suit à votre ~ / .gitconfig: [alias] rmbranch = "! f () {git branch -d $ {1} && git push origin --delete $ {1};}; f" Vous pouvez également l'ajouter à votre configuration globale à partir de la ligne de commande en utilisant git config --global alias.rmbranch \ '! f () {git branch -d $ {1} && git push origin --delete $ {1}; };F' REMARQUE: si vous utilisez -d (d minuscule), la branche ne sera supprimée que si elle a été fusionnée. Pour forcer la suppression, vous devrez utiliser -D (D majuscule). | Pour supprimer votre succursale localement et à distance Checkout vers la branche principale - Git Checkout Master Supprimer votre branche distante - git push origin --delete Supprimez votre branche locale - git branch --delete | Vous pouvez également le faire en utilisant git remote prune origin $ git remote prune origin Origine de la taille URL: git@example.com/yourrepo.git * origine [élaguée] / quelques-branches Il élague et supprime les branches de suivi à distance d'une liste de branches git -r. | En plus des autres réponses, j'utilise souvent l'outil git_remote_branch. C'est une installation supplémentaire, mais cela vous offre un moyen pratique d'interagir avec les succursales distantes. Dans ce cas, pour supprimer: grb supprimer une branche Je trouve que j'utilise aussi assez souvent les commandes de publication et de suivi. | Une commande à une seule ligne pour supprimer à la fois local et distant: D = nom de la branche; git branch -D $ D; origine git push: $ D Ou ajoutez l'alias ci-dessous à votre ~ / .gitconfig. Utilisation: git kill nom-branche [alias] kill = "! f () {git branch -D \" $ 1 \ "; git push origin --delete \" $ 1 \ ";}; f" | Suppression de branches Supposons que notre travail sur la branche "contact-form" soit terminé et que nous l'avons déjà intégré dans "master". Puisque nous n'en avons plus besoin, nous pouvons le supprimer (localement): $ git branch -d formulaire de contact Et pour supprimer la branche distante: git push origin - supprimer le formulaire de contact | Supprimer la branche distante origine git push: Supprimer la branche locale git branch -D Supprimer les étapes de la branche locale: commander dans une autre succursale supprimer la branche locale | Dites simplement: git branch -d git push origine: | git push origin --delete est plus facile à retenir que git push origine: branchName | Vous pouvez maintenant le faire avec l'application GitHub Desktop. Après le lancement de l'application Cliquez sur le projet contenant la branche Basculez vers la branche que vous souhaitez supprimer Dans le menu "Branche", sélectionnez "Annuler la publication ..." pour supprimer la branche des serveurs GitHub. Dans le menu «Branche», sélectionnez «Supprimer« nom_branche »...» pour supprimer la branche de votre machine locale (AKA la machine sur laquelle vous travaillez actuellement) | Pour supprimer localement - (normal) git branche -d ma_branche Si votre branche est en cours de rebasage / fusion et que cela n'a pas été fait correctement, cela signifie que vous obtiendrez une erreur, Rebase / Merge in progress, donc dans ce cas, vous ne pourrez pas supprimer votre branche. Donc, soit vous devez résoudre le rebasage / fusion. Sinon, vous pouvez forcer la suppression en utilisant, git branch -D ma_branche Pour supprimer à distance: git push --delete origin my_branch Vous pouvez faire de même en utilisant: git push origin: my_branch # Facile à retenir, les deux feront de même. Représentation graphique: | Cela ne fonctionnera pas si vous avez une balise avec le même nom que la branche sur la télécommande: $ git push origin: nom-branche-ou-tag erreur: dst refspec nom-branche-ou-balise correspond à plus d'un. erreur: échec de l'envoi de certaines références à 'git@github.com: SomeName / some-repo.git' Dans ce cas, vous devez spécifier que vous souhaitez supprimer la branche, pas la balise: git push origin: refs / heads / branch-or-tag-name De même, pour supprimer la balise au lieu de la branche, vous utiliseriez: git push origin: refs / tags / nom-branche-ou-tag | La plupart des autres réponses entraîneront des erreurs / avertissements. Cette approche est relativement infaillible bien que vous puissiez toujours avoir besoin de git branch -D branch_to_delete si elle n'est pas complètement fusionnée dans some_other_branch, par exemple. git checkout some_other_branch git push origine: branch_to_delete git branch -d branch_to_delete L'élagage à distance n'est pas nécessaire si vous avez supprimé la branche distante. Il est uniquement utilisé pour obtenir les télécommandes les plus à jour disponibles sur un référentiel que vous suivez. J'ai observé que git fetch ajoutera des télécommandes, pas les supprimera. Voici un exemple de quand git remote prune origin fera réellement quelque chose: Utilisateur Aeffectue les étapes ci-dessus. L'utilisateur B exécutera les commandes suivantes pour voir les branches distantes les plus à jour: git chercher git remote prune origin git branche -r | J'en ai eu marre de chercher cette réponse sur Google, alors j'ai adopté une approche similaire à la réponse que crizCraig a publiée plus tôt. J'ai ajouté ce qui suit à mon profil Bash: function gitdelete () { git push origin - supprimer $ 1 branche git -D $ 1 } Ensuite, chaque fois que j'en ai fini avec une branche (fusionnée dans master, par exemple), je lance ce qui suit dans mon terminal: gitdelete mon-nom-branche ... qui supprime ensuite le nom de ma branche d'origine ainsi que localement. | Avant d'exécuter branche git --delete assurez-vous de déterminer d'abord le nom exact de la branche distante en exécutant: git ls-remote Cela vous dira quoi saisir exactement pour la valeur . (la branche est sensible à la casse!) | Utilisation: git push origin: bugfix # Supprime la branche distante git branch -d bugfix # Doit supprimer la branche locale manuellement Si vous êtes sûr de vouloir le supprimer, exécutez git branch -D correction de bogue Maintenant, pour nettoyer les branches distantes supprimées, exécutez git remote prune origin | 1 2 Prochain Question très active. Gagnez 10 points de réputation pour répondre à cette question. L'exigence de réputation permet de protéger cette question contre les spams et les activités sans réponse. Ce n'est pas la réponse que vous recherchez? Parcourez les autres questions marquées git version-control git-branch git-push git-remote ou posez votre propre question.